package org.agent.aigccore.dao.mappers.mysql;

import org.agent.aigccore.model.po.GeneralConfigPO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface GeneralConfigMapper {

    /**
     * 根据 ID 查询通用配置
     *
     * @param id 通用配置 ID
     * @return 通用配置实体
     */
    GeneralConfigPO load(@Param("id") Long id);

    /**
     * 根据 ID 查询通用配置（加锁）
     *
     * @param id 通用配置 ID
     * @return 通用配置实体
     */
    GeneralConfigPO lock(@Param("id") Long id);

    /**
     * 根据domain、scene、ckey查询通用配置
     *
     * @param domain 域
     * @param scene  场景
     * @param ckey   配置键
     * @return 通用配置实体
     */
    GeneralConfigPO loadUK(@Param("domain") String domain, @Param("scene") String scene, @Param("ckey") String ckey);

    /**
     * 分页查询通用配置
     *
     * @param status   状态
     * @param domain   域
     * @param scene    场景
     * @param offset   偏移量
     * @param pageSize 页面大小
     * @return 通用配置列表
     */
    List<GeneralConfigPO> page(@Param("status") String status, @Param("domain") String domain, @Param("scene") String scene, @Param("offset") int offset, @Param("pageSize") int pageSize);

    /**
     * 新增通用配置
     *
     * @param generalConfigPO 通用配置实体
     * @return 插入记录数
     */
    int insert(GeneralConfigPO generalConfigPO);

    /**
     * 更新通用配置
     *
     * @param generalConfigPO 通用配置实体
     * @return 更新记录数
     */
    int update(GeneralConfigPO generalConfigPO);

    /**
     * 删除通用配置
     *
     * @param id 通用配置ID
     * @return 删除记录数
     */
    int delete(@Param("id") Long id);
}